package util;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import java.awt.Window;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.ResourceBundle;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

import modelUtil.Util;
import AccionBoton.AccionCambiarPagina;
import AccionBoton.AccionCerrar;
import AccionBoton.AccionCerrarCruz;
import AccionBoton.AccionFocoCreditos;

import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
import com.sun.pdfview.PagePanel;

public class MenuAyuda extends JDialog{

	private Window _padre;
	private int indice = 1;
	private PDFFile pdffile;
    private PDFPage page;

	public MenuAyuda(Window padre){
		
		_padre = padre;
		
		try{
		initComponents();
		
		}catch(Exception e){
			
		}

		
	}
	public MenuAyuda(int _indice, Window padre){
		
		_padre = padre;
		indice = _indice;
		
		try{
		initComponents();}catch(Exception e){
			
			
		}

		
	}
	
	private void initComponents() throws IOException{
    PagePanel panel = new PagePanel();
    File file = new File("lib//Ayuda.pdf");
	Toolkit tk = Toolkit.getDefaultToolkit();
	Dimension screenSize = tk.getScreenSize();

    RandomAccessFile raf = new RandomAccessFile(file, "r");

    FileChannel channel = raf.getChannel();

    ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,
        0, channel.size());

    pdffile = new PDFFile(buf);
    
    // show the first page
    if(indice>pdffile.getNumPages()){
        page = pdffile.getPage(pdffile.getNumPages()-1);

    }else{
    page = pdffile.getPage(indice);}
    this.setPreferredSize(new Dimension(400,650));
    this.setBounds(screenSize.width/2-200,screenSize.height/2-315,400,630);
    this.addComponentListener(new AccionCerrarCruz(this, _padre));
   // panel.setPreferredSize(new Dimension(new Float(page.getWidth()).intValue(),new Float(page.getHeight()).intValue()));
     panel.setPreferredSize(new Dimension(350,550));

    GridBagLayout grid = new GridBagLayout();
    GridBagConstraints cons = new GridBagConstraints();
    cons.fill = GridBagConstraints.BOTH;
    cons.gridheight = 1;
    cons.gridwidth = 1;
    cons.gridx = 0;
    cons.gridy = 0;
    this.setLayout(grid);
    grid.addLayoutComponent(panel, cons);
    this.add(panel);
    
    //BotonPersonalizado siguiente = Util.BotonImagen(ResourceBundle.getBundle("internacionalizacion/Etiquetas").getString("etiqueta_ayuda_siguiente"), "lib//Resources//siguientePeque.png");

    //BotonPersonalizado anterior = Util.BotonImagen(ResourceBundle.getBundle("internacionalizacion/Etiquetas").getString("etiqueta_ayuda_anterior"), "lib//Resources//anteriorPeque.png");
    BotonPersonalizado anterior = Util.BotonImagen("", "lib//Resources//anteriorPeque.png");

    anterior.setPreferredSize(new Dimension(80,40));
    anterior.addActionListener(new AccionCambiarPagina(this, -1));
    anterior.setFocusable(true);
    anterior.addFocusListener(new AccionFocoCreditos(anterior));
    BotonPersonalizado siguiente = Util.BotonImagen("", "lib//Resources//siguientePeque.png");
    siguiente.setPreferredSize(new Dimension(80,40));
    siguiente.addActionListener(new AccionCambiarPagina(this, 1));
    siguiente.setFocusable(true);
    siguiente.addFocusListener(new AccionFocoCreditos(siguiente));

	anterior.getLabelImagen().setHorizontalAlignment(SwingConstants.LEFT);
	anterior.getLabelTexto().setHorizontalAlignment(SwingConstants.RIGHT);
	siguiente.getLabelImagen().setHorizontalAlignment(SwingConstants.RIGHT);
	siguiente.getLabelTexto().setHorizontalAlignment(SwingConstants.LEFT);
	anterior.setBackground(Color.lightGray);
	siguiente.setBackground(Color.lightGray);
	anterior.setMnemonic('a');
	siguiente.setMnemonic('s');
	anterior.getLabelImagen().setDisplayedMnemonic('a');
	siguiente.getLabelImagen().setDisplayedMnemonic('s');
	
	
	BotonPersonalizado cancelar = Util.BotonImagen(ResourceBundle.getBundle("internacionalizacion/Etiquetas").getString("etiqueta_popup_admin_cancelar"), "lib//cancelar.png");
	cancelar.addActionListener(new AccionCerrar(this, _padre));

	cancelar.getLabelImagen().setHorizontalAlignment(SwingConstants.LEFT);
	cancelar.getLabelTexto().setHorizontalAlignment(SwingConstants.RIGHT);
	cancelar.setBackground(Color.lightGray);
	cancelar.setMnemonic('c');
	cancelar.getLabelImagen().setDisplayedMnemonic('c');
    cancelar.setPreferredSize(new Dimension(80,40));

    
    

    JPanel botones = new JPanel();
    FlowLayout flow = new FlowLayout();
    botones.setLayout(flow);
    flow.addLayoutComponent("anterior", anterior);
    botones.add(anterior);
    flow.addLayoutComponent("siguiente", siguiente);
    botones.add(siguiente);
    flow.addLayoutComponent("cancelar", cancelar);
    botones.add(cancelar);
    cons.gridy = 1;
    
    grid.addLayoutComponent(botones, cons);
    this.add(botones);
    
    this.pack();
    this.setAlwaysOnTop(true);
    this.setVisible(true);

    //load a pdf from a byte buffer



	panel.showPage(page);
    
	}

	public int getIndice() {
		return indice;
	}

	public void setIndice(int indice) {
		if(indice>0){
			if(indice< pdffile.getNumPages()){
				this.indice = indice;
				page = pdffile.getPage(indice);
				this.pack();
				this.repaint();
				
			}
			
		}
		this.indice = indice;
		
		
	}

	public Window get_padre() {
		return _padre;
	}

	public void set_padre(Window padre) {
		_padre = padre;
	}
	public PDFFile getPdffile() {
		return pdffile;
	}
	public void setPdffile(PDFFile pdffile) {
		this.pdffile = pdffile;
	}
	
	
	
}
